ExcelIO 是 LK 工具集中最核心的数据交换组件,基于 EPPlus 5.3.1 库实现,支持在 Grasshopper 和 Excel 之间进行高效、可靠的读写操作。
右键点击组件,弹出菜单中有一个切换项:
切换后组件会:
Write / Read 序列化保存到 Grasshopper 文档中,下次打开自动恢复。
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 执行写入 (W) | Boolean | 可选 | 设为 True 或点击组件按钮执行写入操作。默认不触发。 |
| 文件路径 (P) | 必需 | 输出文件的完整路径列表。路径数量必须与数据分支数量完全一致,一个路径对应一个分支。 | |
| 模板路径 (T) | File Path | 可选 | Excel 模板文件路径。仅在目标文件不存在时生效——组件会先拷贝模板到输出路径再写入数据。如果模板路径无效或指向不存在的文件,组件会发出警告并直接创建新文件。 |
| 工作表 (S) | Text | 可选 | 目标工作表名称。默认 Sheet1。如果文件已存在且包含同名工作表则使用已有表,否则创建新表。 |
| 起始单元格 (C) | Text | 可选 | 数据写入的起始位置,如 A1、B5 等。默认 A1。 |
| 数据 (D) | Text Tree | 必需 | 要写入的树形结构数据。每行一个字符串,逗号分隔各列。树的每个分支对应一个 Excel 文件。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| 无输出参数 | — | 写入模式下组件直接操作文件,不输出数据。执行结果通过消息区反馈。 |
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 执行读取 (R) | Boolean | 必需 | 设为 True 或点击按钮执行读取操作。默认 False。 |
| 文件路径 (P) | File Path | 必需 | 源 Excel 文件路径。支持包含引号的路径——组件自动去除首尾双引号。 |
| 工作表 (S) | Text | 可选 | 工作表名称或索引(从 1 开始)。默认 1(第一个工作表)。 |
| 单元格范围 (C) | Text | 可选 | 读取范围。输入 All 读取全部有效数据区域,或指定范围如 A1:B15。默认 All。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| 数据 (D) | 读取的逗号分隔数据行列表。每行字符串对应 Excel 的一行数据。 |
检查触发条件(按钮或 W 输入),验证文件路径列表数量与数据分支数量是否匹配。若不匹配,报错并终止。
如果目标文件不存在且提供了有效的模板路径,先复制模板到目标位置,再打开进行写入。如果模板路径无效(文件不存在),发出 Warning 但继续——直接创建新文件。
根据目标文件打开 ExcelPackage,检查是否已存在同名工作表:
解析每个单元格的字符串值:
| 输入字符串 | 写入类型 | Excel 效果 |
|---|---|---|
"123" | int | 数字格式,右对齐 |
"3.14" | double | 浮点数格式 |
"ABC-01" | string | 文本格式,左对齐 |
""(空) | string.Empty | 空单元格 |
数值识别使用 CultureInfo.InvariantCulture,确保小数点处理不受系统区域设置影响。
所有数据转换为 object[,] 二维数组后,通过 worksheet.Cells.Value 一次赋入——这是 EPPlus 中最高效的写入方式。
调用 package.Save() 写入磁盘。EPPlus 会在 using 块结束时自动管理文件流。
检查文件是否存在。如果路径带引号(如从某些文本组件输出),自动去除首尾双引号。
通过 GetWorksheet 方法定位工作表:
1 = 第一个表)ProcessRangeDefinition 方法处理用户指定的范围:
A1:D20)——按指定范围读取自动检测范围时,GetExactDataRange 方法从四边扫描空行/空列,精确裁剪到实际数据区域。
将 object[,] 二维数组的每行拼接为逗号分隔的字符串,输出到 Grasshopper。
| 场景 | 说明 |
|---|---|
| 装配表导出 | 将 AssemblyAttributes 生成的 CSV 装配表写入 Excel,配合模板文件保持列宽、表头格式等预设样式。 |
| 参数化明细表 | 数据树中每个分支对应一个板块的零件清单,分支写入不同的 Excel 文件,实现一键批量出表。 |
| 读取配置数据 | 从 Excel 配置表中读取参数数据(如截面规格、材料属性),切换为读取模式后接入 ExcelPath 生成的路径。 |
| 模板化报表 | 使用含格式的 Excel 模板文件,组件将数据填入指定起始单元格,保留模板的列宽、合并单元格、字体等格式。 |
NonCommercial 许可证模式,适用于非商业用途。商业使用需要 EPPlus 商业授权。ExcelPath 生成路径,路径数量自动匹配。.xlsx 文件——不需要机器上安装 Microsoft Office。ExcelIO.cs,类名为 ExcelIO。| 名称 | Excel 数据交换 |
| 英文名 | Excel IO |
| 分类 | LK → File Management |
| 按钮文字 | Action |
| 基类 | BoolButtonComponent(动态参数) |
| GUID | {5A155500-884B-4BF3-A2B7-9D2C274DC664} |